"""
标准化，均值移除
调整数据的分布状态，以列为单位
每列的均值为0，标准差为1

数组步骤：
    1. 用原始数据减去均值
    2. 减完之后的结果/原始数据的标准差
"""
import numpy as np

raw_sample = np.array([[3.0,-1.0,2.0],
                       [0.0,4.0,3.0],
                       [1.0,-4.0,2.0]])

std_sample = raw_sample.copy()

for col in std_sample.T:
    col_mean = col.mean() # 每列的均值
    col_std = col.std()  #每列的标准差
    col -= col_mean
    col /= col_std

print(std_sample)
print('mean:',std_sample.mean(axis=0))
print('std:',std_sample.std(axis=0))

# 使用sklearn提供API实现均值移除
import sklearn.preprocessing as sp # 数据预处理模块
print("Sklearn")
# 均值移除
res = sp.scale(raw_sample)
print('mean:',res.mean(axis=0))
print('std:',res.std(axis=0))

